10 .OPT NO LIST 20 .OPT OBJ 30 ; *** SKEET SHOOT *** 40 ;programed by Tracy and Mike Jacobs 50 ;programed in Mac/65 by OSS inc. 60 *= $4000 70 PLAYERS $0400 ;RESERVED 80 PLAYER0 $0100 ;MEMORY FOR 90 PLAYER1 $0100 ;PLAYERS 0100 PLAYER2 $0100 0110 PLAYER3 $0100 0120 DOSVIN = $0C ;RESET POINTER 0130 SDLSTL = $0230 ;DL POINTER (LB) 0140 SDLSTH = $0231 ;DL POINTER (HB) 0150 INTL = $0200 ;DLI POINTER (LB) 0160 INTH = $0201 ;DLI POINTER (HB) 0170 NMIEN = $D40E ;INTERRUPT ENABLE 0180 WSYNC = $D40A ;WAIT HOR. SYNC 0190 CHSET = PLAYERS ;NEW CHAR SET 0200 HPOSP0 = $D000 ;HOR. PL0 0210 HPOSP1 = $D001 ;HOR. PL1 0220 HPOSP2 = $D002 ;HOR. PL2 0230 HPOSP3 = $D003 ;HOR. PL3 0240 SIZEP0 = $D008 ;SIZE OF PL0 0250 SIZEP1 = $D009 ;SIZE OF PL1 0260 SDMCTL = $022F ;(DMA) CONTROL 0270 GRACTL = $D01D ;GRAPHIC CONTROL 0280 PCOLP0 = $02C0 ;COLOR OF 0290 PCOLP1 = $02C1 ;PLAYERS 0300 PCOLP2 = $02C2 0310 PCOLP3 = $02C3 0320 PMBASE = $D407 ;P/M BASE 0330 STICK = $0278 ;JOYSTICK (A) 0340 TRIG0 = $D010 ;JOYSTICK TRIGGER 0350 VCOUNT = $D40B ;VER. LINE COUNT 0360 P1PL = $D00D ;PL1 TO PLAYERS 0370 HITCRL = $D01E ;COLLISSION CLR 0380 RANDOM = $D20A ;RANDOM # 0390 CHBAS = $02F4 ;CHARACTER BASE 0400 COLBK = $D01A ;BACKGROUND COLOR 0410 COLPF2 = $D018 ;COLOR PLAYFIELD2 0420 FRO = $D4 ;FLOATING POINT # 0430 IFP = $D9AA ;(FP) CONVERSION 0440 FASC = $D8E6 ;CONVERSION (SUB) 0450 INBUFF = $F3 ;POINTER TO 0460 ; BUFFER ASCII 0470 CDTMV3 = $021C ;TIMER 3 0480 CDTMF3 = $022A ;(3) FLAG/VECTOR 0490 CONSOL = $D01F ;CONSOL PORT KEYS 0500 AUDC1 = $D201 ;AUDIO(1) CONTROL 0510 AUDF1 = $D200 ;AUDIO(1) FREQ. 0520 AUDCTL = $D208 ;AUDIO CONTROL 0530 ATRACT = $4D ;MODE TIMER 0540 SCR = PLAYERS+$2000 ;DISPLAY 0550 DISP = SCR+$03E8 ;COUNTERS 0560 ; 0570 ;Reserved Bytes for Variables 0580 ; 0590 LOCATION 1 ;PLAYER 1,2 Y POS 0600 PLX0 1 ;AIM X POS. 0610 PLX1 1 ;BULLET X POS. 0620 PLX2 1 ;SKEET1 X POS. 0630 PLX3 1 ;SKEET2 X POS. 0640 SKEE1 1 ;CHAR FOR SKEET1 0650 SKEE2 1 ;CHAR FOR SKEET2 0660 HIT 1 ;HIT COUNTER 0670 SHOTS 1 ;SHOT COUNTER 0680 TEMPO 1 ;TEMPORARY REG. 0690 DRAW 1 ;PLAYERS POINTER 0700 DIS2 1 ;LENGHT OF BULLET 0710 ;ON THE SCREEN 0720 LOSKEE1 1 ;Y POS. OF SKEE1 0730 LOSKEE2 1 ;Y POS. OF SKEE2 0740 DIRECT 1 ;SKEET1 DIRECTION 0750 DIRECT2 1 ;SKEET2 DIRECTION 0760 SPEED 1 ;WHICH SPEED 0770 CHECK 1 ;# FINISH SKEES 0780 NUMBER 1 ;MATH REGISTERS 0790 HUNDRED 1 0800 TEN 1 0810 ONE 1 0820 DLIREG 1 ;DLI REGISTER 0830 CSIZE 1 ;SKEETS DISTANCE 0840 SCOREH 1 ;HI BYTE OF SCORE 0850 SCOREL 1 ;LO BYTE OF SCORE 0860 ROUND 1 ;ROUND COUNTER 0870 POINT 1 ;VALUE OF SKEETS 0880 TSHOT 1 ;STAY OF BULLET 0890 AUINDX 1 ;AUDIO REG. 0900 ; 0910 ;START SET UP 0920 ; 0930 LDA # BEGIN ;GAME WILL 0960 STA DOSVIN+1 ;START OVER. 0970 ; 0980 ; CLEAR MEMORY FOR PLAYER, 0990 ; CHARACTER SET, AND SCREEN 1000 ; 1010 LDA #0 1020 LDX #0 1030 CLEAR STA PLAYERS,X 1040 STA PLAYERS+$0100,X 1050 STA PLAYERS+$0200,X 1060 STA PLAYERS+$0300,X 1070 STA PLAYERS+$0400,X 1080 STA PLAYERS+$0500,X 1090 STA PLAYERS+$0600,X 1100 STA PLAYERS+$0700,X 1110 INX 1120 BNE CLEAR 1130 ; 1140 BEGIN LDY #0 ;DRAW 1150 CONTST LDA CHARDT,Y ;CHARACTERS 1160 TAX ;ON THE 1170 INY ;SCREEN 1180 LDA CHARDT,Y 1190 STORDT STA SCR 1200 PHA 1210 CLC 1220 LDA STORDT+1 1230 ADC #1 1240 STA STORDT+1 1250 LDA STORDT+2 1260 ADC #0 1270 STA STORDT+2 1280 PLA 1290 DEX 1300 BNE STORDT 1310 INY 1320 CPY #124 1330 BNE CONTST 1340 ; 1350 ;SET UP SCREEN 1360 ; 1370 SUS LDA #LST&255 1380 STA SDLSTL 1390 LDA #LST/256 1400 STA SDLSTH 1410 LDA #192 1420 STA NMIEN 1430 LDA #DLI&255 ;SET DLI 1440 STA INTL 1450 LDA #DLI/256 1460 STA INTH 1470 LDA #0 1480 STA DLIREG 1490 LDA #242 1500 STA COLBK 1510 ; 1520 ; SET UP P/M GRAPHICS 1530 ; 1540 START LDA # >PLAYERS 1550 STA PMBASE 1560 LDA #88 1570 STA PCOLP0 1580 STA PCOLP2 1590 LDA #134 1600 STA PCOLP3 1610 LDA #$0A 1620 STA PCOLP1 1630 LDA #120 1640 STA HPOSP0 1650 STA PLX0 1660 STA HPOSP1 1670 ; 1680 ;CLEAR REGISTERS 1690 LDA #0 1700 STA HPOSP2 1710 STA PLX2 1720 STA HPOSP3 1730 STA PLX3 1740 STA SHOTS 1750 STA HIT 1760 STA SCOREH 1770 STA SCOREL 1780 STA TSHOT 1790 STA ROUND 1800 ; CLEAR NUMBERS ON SCREEN 1810 LDA #16 1820 STA DISP+70 1830 STA DISP+71 1840 STA DISP+72 1850 STA DISP+7 1860 STA DISP+8 1870 STA DISP+9 1880 STA DISP+46 1890 STA DISP+47 1900 STA DISP+48 1910 ; 1920 ; SET UP SCREEN POINTERS 1930 ; 1940 LDA #62 1950 STA SDMCTL 1960 LDA #3 1970 STA GRACTL 1980 LDA #120 1990 STA LOCATION 2000 LDA #208 ;SET SKEETS 2010 STA LOSKEE1 ;IN THERE 2020 STA LOSKEE2 ;STARTING 2030 LDA #1 ;POSITION 2040 STA SIZEP0 2050 STA SIZEP1 2060 JSR CLRAIM ;CLEAR GUNSIGHT 2070 LDA #1 2080 STA SKEE1 2090 STA SKEE2 2100 LDX #0 2110 JSR RESET 2120 JSR RESET2 2130 JSR TSCORE 2140 ; 2150 ; PRINT TITLE IN SKY 2160 ; 2170 LDX #0 2180 PRINT LDA SKESHO,X 2190 STA SCR+135,X 2200 INX 2210 CPX #11 2220 BEQ LCHAR 2230 JMP PRINT 2240 SKESHO .SBYTE "SKEET SHOOT" 2250 ; 2260 ; REDEFINE CHARACTER SET 2270 ; 2280 LCHAR LDA $E000,X 2290 STA CHSET,X 2300 LDA $E0FF,X 2310 STA CHSET+$FF,X 2320 INX 2330 BNE LCHAR 2340 LDA # >CHSET 2350 STA CHBAS 2360 LDX #80 2370 CHANCH LDA CHDATA,X 2380 STA CHSET+8,X 2390 DEX 2400 BPL CHANCH 2410 ; 2420 ; WAIT FOR (START) KEY 2430 ; 2440 CKEY LDA CONSOL 2450 CMP #6 2460 BNE CKEY 2470 STA HITCRL 2480 ; 2490 ;CLEAR TITLE 2500 ; 2510 LDX #0 2520 CSCR LDA CLRSCR,X 2530 STA SCR+135,X 2540 INX 2550 CPX #11 2560 BEQ PULL 2570 JMP CSCR 2580 CLRSCR .SBYTE " " 2590 ; 2600 ; VCOUNT DELAY ROUTINE 2610 ; 2620 CHK LDA VCOUNT 2630 CMP #123 2640 BNE CHK 2650 LDA CDTMF3 2660 BNE CHK2 2670 JSR AU0 2680 CHK2 LDA VCOUNT 2690 CMP #123 2700 BEQ CHK2 2710 LDA CHECK 2720 CMP #2 2730 BMI DIR 2740 BEQ PULL 2750 ; 2760 ; BEGIN PLAY 2770 ; 2780 PULL JSR CLRSKE1 ;CLEAR SKEET1 2790 JSR CLRSKE2 ;CLEAR SKEET2 2800 LDA #114 ;SET PLAYERS 2810 STA HPOSP0 ;TO THERE 2820 STA PLX0 ;POSITIONS 2830 LDA #130 ;AND WAIT 2840 STA LOCATION ;FOR THE STICK 2850 JSR CLRAIM ;TO BE PUSH UP 2860 LDA #0 2870 STA AUDC1 ;CLEAR AUDIO 2880 ; 2890 ;WAIT FOR STICK TO BE PUSHED UP 2900 ; 2910 PULLS 2920 LDA STICK 2930 CMP #14 2940 BNE PULLS 2950 LDA #0 2960 STA CHECK 2970 LDA RANDOM ;LOAD RANDOM # 2980 STA SPEED ;FOR SPEED. 2990 LDA #0 ;MAKE SLINING 3000 STA CDTMF3 ;SOUND. 3010 LDA #18 3020 STA AUINDX 3030 JSR AU0 3040 LDA #0 3050 STA ATRACT 3060 DIR JMP PICKDIR ;RELEASE SKEETS. 3070 ; 3080 COU LDA DIS2 ;COUNT LENGTH OF 3090 CMP #1 ;BULLET ON 3100 BEQ CLRSHOT ;THE SCREEN 3110 BPL GOBULL 3120 ; 3130 ;JOYSTICK CONTROL 3140 ; 3150 TRIG 3160 LDX TSHOT ;COUNT SHOTS THAT 3170 CPX #2 ;HAVE BEEN FIRED 3180 BPL LRMOVE ;IF TWO HAS BEEN 3190 LDA TRIG0 ;FIRED THEN YOUR 3200 CMP #0 ;OUT OF SHELL 3210 BEQ FIRE 3220 JMP LRMOVE 3230 FIRE JMP SHOT ;FIRE GUN 3240 GOBULL JMP SHOOT ;DISPLAY BULLET 3250 CLRSHOT JMP ERASE ;CLEAR SHOOT 3260 LRMOVE LDY STICK ;MOVE YOUR 3270 LDX PLX0 ;AIM LEFT OR 3280 LDA STRX,Y ;RIGHT 3290 CMP #0 3300 BEQ STOHOZ 3310 BPL RIGHT 3320 LEFT SEC 3330 CPX #40 3340 BCC LEFT2 3350 DEX 3360 DEX 3370 LEFT2 JMP STOHOZ 3380 RIGHT SEC 3390 CPX #204 3400 BCS STOHOZ 3410 INX 3420 INX 3430 STOHOZ STX PLX0 3440 STX HPOSP0 3450 JMP HMOVE 3460 UDMOVE LDY STICK ;MOVE YOUR AIM 3470 LDA STRY,Y ;UP OR DOWN 3480 BEQ MAC 3490 BPL MDN 3500 BMI MUP 3510 MDN SEC 3520 LDA LOCATION 3530 CMP #212 3540 BCS MAC 3550 JSR MOVEDN 3560 JSR MOVEDN 3570 JSR MOVEDN 3580 MAC JMP CHK 3590 MUP SEC 3600 LDA LOCATION 3610 CMP #16 3620 BCC MAC 3630 JSR MOVEUP 3640 JSR MOVEUP 3650 JSR MOVEUP 3660 JSR MOVEUP 3670 JMP CHK 3680 MOVEUP CLC ;MOVE PL0 UP 3690 LDA DRAW 3700 ADC #14 3710 STA TEMPO 3720 LDX LOCATION 3730 LDY DRAW 3740 DEX 3750 LOOPUP LDA PIC,Y 3760 STA PLAYER0,X 3770 INX 3780 INY 3790 CPY TEMPO 3800 BNE LOOPUP 3810 LDA #0 3820 STA PLAYER0,X 3830 DEC LOCATION 3840 RTS 3850 ; 3860 MOVEDN CLC ;MOVE PL0 DOWN 3870 LDA DRAW 3880 ADC #14 3890 STA TEMPO 3900 LDX LOCATION 3910 LDY DRAW 3920 LDA #0 3930 STA PLAYER0,X 3940 INX 3950 LOOPDN LDA PIC,Y 3960 STA PLAYER0,X 3970 INY 3980 INX 3990 CPY TEMPO 4000 BNE LOOPDN 4010 INC LOCATION 4020 RTS 4030 ; 4040 HMOVE CLC ;HOZ. MOVE 4050 LDA DRAW 4060 ADC #14 4070 STA TEMPO 4080 LDX LOCATION 4090 LDY DRAW 4100 LOOPH LDA PIC,Y 4110 STA PLAYER0,X 4120 INX 4130 INY 4140 CPY TEMPO 4150 BNE LOOPH 4160 BEQ JUMPUP 4170 JUMPUP JMP UDMOVE 4180 ; 4190 ; SHOOT AT THE SKEET 4200 ; 4210 SHOT LDA #0 ;MAKE AUDIO 4220 STA CDTMF3 ;GUN SHOT 4230 LDA #0 4240 STA AUINDX 4250 LDA CDTMF3 4260 BNE CONTS 4270 JSR AU0 4280 CONTS LDX TSHOT ;DISPLAY BULLET 4290 INX ;15 LOOPS ON THE 4300 STX TSHOT ;SCREEN 4310 LDA #15 4320 STA DIS2 4330 INC SHOTS 4340 SHOOT LDA PLX0 4350 STA HPOSP1 4360 CLC 4370 LDA DRAW 4380 ADC #9 4390 STA TEMPO 4400 LDX LOCATION 4410 LDY DRAW 4420 BULLET LDA PIC2,Y 4430 STA PLAYER1,X 4440 INX 4450 INY 4460 CPY TEMPO 4470 BNE BULLET 4480 DEC DIS2 4490 JMP COLL 4500 ; 4510 ERASE LDA DRAW ;ERASE THE BULLET 4520 ADC #9 4530 STA TEMPO 4540 LDX LOCATION 4550 LDY DRAW 4560 LDA #0 4570 STA DIS2 4580 CLRLOP LDA #0 4590 STA PLAYER1,X 4600 INX 4610 INY 4620 CPY TEMPO 4630 BNE CLRLOP 4640 LDX SHOTS ;CHANGE SHOT REG. 4650 JSR DISPNUM 4660 JSR PUTSHOT 4670 JMP CHK 4680 ; 4690 SOUMAK STA AUINDX 4700 LDA #0 4710 STA CDTMF3 4720 JSR AU0 4730 RTS 4740 ; 4750 ;COLLISION 4760 ; 4770 COLL LDA P1PL 4780 AND #$04 4790 BNE CCOLOR 4800 ; 4810 COLL2 LDA P1PL 4820 STA HITCRL 4830 AND #$08 4840 BNE HIT2 4850 JMP CHK 4860 ; 4870 CCOLOR LDA SKEE1 ;SHOT SKEET1 4880 CMP #15 ;CHECK IF IT 4890 BPL COLL2 ;HAS BEEN HIT 4900 INC HIT ;BEFORE. 4910 LDA SKEE1 ;NO! 4920 ADC #22 ;CHANGE CHARACTER 4930 STA SKEE1 ;MAKE SOME 4940 LDA #42 ;NOISE 4950 JSR SOUMAK ;AND GIVE ME 4960 LDX HIT ;SOME POINTS. 4970 JSR DISPNUM 4980 JSR PUTHIT 4990 LDA #128 5000 JSR SCSP 5010 LDA POINT 5020 JSR B16 5030 JMP COLL2 5040 ; 5050 HIT2 LDA SKEE2 ;SHOT SKEET2 5060 CMP #15 ;SAME AS BEFORE 5070 BPL MAC2 5080 INC HIT 5090 LDA SKEE2 5100 ADC #22 5110 STA SKEE2 5120 LDA #42 5130 JSR SOUMAK 5140 JSR SCSP 5150 LDA POINT 5160 JSR B16 5170 MAC2 JMP CHK 5180 ; 5190 B16 CLC ;16-BIT MATH 5200 ADC SCOREL ;ADDITION 5210 STA SCOREL ;ROUTINE 5220 LDA #0 5230 ADC SCOREH 5240 STA SCOREH 5250 JSR TSCORE 5260 RTS 5270 ; 5280 SMALL2 LDX CSIZE ;KEEP TRACK 5290 INX ;OF SKEET 5300 STX CSIZE ;DISTANCE 5310 CPX #49 5320 BNE SKEE2UP 5330 MAKE2 LDA SKEE2 ;CHANGE 5340 ADC #3 ;CHARACTER OF 5350 STA SKEE2 ;THE SKEET 5360 LDA #0 5370 STA CSIZE 5380 ; 5390 ; P/M OF SKEET (2) 5400 ; 5410 SKEE2UP CLC 5420 LDA SKEE2 5430 ADC #4 5440 STA TEMPO 5450 LDX LOSKEE2 5460 LDY SKEE2 5470 DEX 5480 LOOPSK2 LDA MG,Y 5490 STA PLAYER3,X 5500 INX 5510 INY 5520 CPY TEMPO 5530 BNE LOOPSK2 5540 LDA #0 5550 STA PLAYER3,X 5560 DEC LOSKEE2 5570 LDA LOSKEE2 5580 CMP #24 5590 BEQ RESET2 5600 RTS 5610 ; 5620 SMALL1 LDX CSIZE ;KEEP TRACK 5630 INX ;OF DISTANCE 5640 STX CSIZE ;SKEET1 5650 CPX #49 5660 BNE SKEE1UP 5670 MAKE1 LDA SKEE1 ;CHANGE CHARACTER 5680 ADC #3 5690 STA SKEE1 5700 LDA #0 5710 STA CSIZE 5720 ; 5730 ; P/M OF SKEET (1) 5740 ; 5750 SKEE1UP CLC 5760 LDA SKEE1 5770 ADC #4 5780 STA TEMPO 5790 LDX LOSKEE1 5800 LDY SKEE1 5810 DEX 5820 LOOPSK1 LDA MG,Y 5830 STA PLAYER2,X 5840 INX 5850 INY 5860 CPY TEMPO 5870 BNE LOOPSK1 5880 LDA #0 5890 STA PLAYER2,X 5900 DEC LOSKEE1 5910 LDA LOSKEE1 5920 CMP #24 5930 BEQ RESET 5940 RTS 5950 ; 5960 ; RESET REGISTERS & COUNT ROUNDS 5970 ; 5980 RESET2 JSR CLRSKE2 5990 INC ROUND 6000 INC CHECK 6010 LDA RANDOM 6020 STA DIRECT2 6030 JSR SIDE2 6040 ADC #8 6050 STA HPOSP3 6060 STA PLX3 6070 LDA #208 6080 STA LOSKEE2 6090 LDA #1 6100 STA SKEE2 6110 LDA #0 6120 STA TSHOT 6130 STA AUDF1 6140 STA AUDC1 6150 STA CDTMV3 6160 LDX ROUND 6170 CPX #31 6180 BEQ ADDUP 6190 JSR DISPNUM 6200 JSR PUTROD 6210 STA HITCRL 6220 RTS 6230 ; 6240 ; RESET SKEET1 REGISTERS 6250 ; 6260 RESET JSR CLRSKE1 6270 INC CHECK 6280 LDA RANDOM 6290 STA DIRECT 6300 JSR SIDE1 6310 STA HPOSP2 6320 STA PLX2 6330 LDA #208 6340 STA LOSKEE1 6350 LDA #1 6360 STA SKEE1 6370 STA HITCRL 6380 RTS 6390 ; 6400 ADDUP LDA #5 ;AT END OF GAME 6410 JSR B16 ;GIVE 5 POINTS 6420 LDX SHOTS ;FOR EVER BULLET 6430 INX ;THAT IS LEFT. 6440 STX SHOTS 6450 CPX #60 6460 BEQ GAME 6470 JMP ADDUP 6480 ; 6490 GAME LDX #0 ;DISPLAY ON 6500 OVER LDA END,X ;THE SCREEN 6510 STA SCR+135,X ;GAME OVER 6520 INX 6530 CPX #9 6540 BEQ JAM 6550 JMP OVER 6560 ; 6570 JAM LDA CONSOL ;WAIT FOR 6580 CMP #6 ;START KEY TO 6590 BEQ AGAIN ;BEGIN. 6600 LDA #0 ; 6610 STA HPOSP2 ;GET PLAYERS 1,2 6620 STA HPOSP3 ;OUT OF THE 6630 JMP JAM ;WAY 6640 ; 6650 AGAIN JSR CLRAIM 6660 JMP START 6670 ; 6680 END .SBYTE "GAME OVER" 6690 ; 6700 SIDE1 LDA DIRECT ;SKEET ONE 6710 JMP SIDE ;DIRECTION 6720 SIDE2 LDA DIRECT2 ;SKEET TWO 6730 SIDE CMP #85 ;DIRECTION 6740 BMI LSIDE 6750 CMP #170 6760 BMI MIDDLE 6770 BPL RSIDE 6780 RE RTS 6790 RSIDE LDA #50 ;LEFT SIDE 6800 JMP RE 6810 MIDDLE LDA #118 ;MIDDLE 6820 JMP RE 6830 LSIDE LDA #192 ;RIGHT SIDE 6840 JMP RE 6850 SKEEU2 JSR SMALL1 ;MOVE SKEET1 6860 LDA SPEED ;UP 6870 SEC 6880 CMP #50 6890 BCC PICK2 6900 JSR SMALL1 6910 LDA SPEED 6920 SEC 6930 CMP #160 6940 BCC PICK2 6950 JSR SMALL1 6960 JMP PICK2 6970 SKEE2U2 JSR SMALL2 ;MOVE SKEET2 6980 SEC ;UP 6990 LDA LOCATION 7000 CMP #212 7010 BCS PAST 7020 JSR MOVEDN ;GRAVITY 7030 PAST LDA SPEED 7040 SEC 7050 CMP #50 7060 BCC GOUP 7070 JSR SMALL2 7080 LDA SPEED 7090 SEC 7100 CMP #160 7110 BCC GOUP 7120 JSR SMALL2 7130 ; 7140 GOUP JMP COU 7150 ; 7160 ;MAKE 16-BIT AUDIO WITH SUSTAIN 7170 ; 7180 AU0 LDX AUINDX 7190 LDA SOUND1,X 7200 STA AUDF1 7210 INX 7220 LDA SOUND1,X 7230 STA AUDC1 7240 INX 7250 LDA SOUND1,X 7260 STA CDTMV3 7270 INX 7280 STX AUINDX 7290 LDA #$FF 7300 STA CDTMF3 7310 RTS 7320 ; 7330 PICKDIR LDA DIRECT ;MOVE IN WHAT 7340 CMP #85 ;DIRECTION 7350 BMI SLEFT ;SKEET1 7360 CMP #170 7370 BMI SKEEU2 7380 BPL SRIGHT 7390 PICK2 LDA DIRECT2 ;MOVE DIRECTION 7400 CMP #85 ;SKEET2 7410 BMI S2LEFT 7420 CMP #170 7430 BMI SKEE2U2 7440 BPL S2RIGHT 7450 JMP COU 7460 SLEFT LDX PLX2 ;MOVE SKEET1 7470 DEX ;LEFT 7480 STX PLX2 7490 STX HPOSP2 7500 JMP SKEEU2 7510 SRIGHT LDX PLX2 ;MOVE SKEET1 7520 INX ;RIGHT 7530 STX PLX2 7540 STX HPOSP2 7550 JMP SKEEU2 7560 S2LEFT LDX PLX3 ;MOVE SKEET2 7570 DEX ;LEFT 7580 STX HPOSP3 7590 STX PLX3 7600 JMP SKEE2U2 7610 S2RIGHT LDX PLX3 ;MOVE SKEET2 7620 INX ;RIGHT 7630 STX HPOSP3 7640 STX PLX3 7650 JMP SKEE2U2 7660 CLRSKE1 LDA SKEE1 ;CLEAR SKEET1 7670 ADC #4 7680 STA TEMPO 7690 LDX LOSKEE1 7700 LDY SKEE1 7710 BLANK1 LDA #0 7720 STA PLAYER2,X 7730 INX 7740 INY 7750 CPY TEMPO 7760 BNE BLANK1 7770 RTS 7780 CLRSKE2 LDA SKEE2 ;CLEAR SKEET2 7790 ADC #4 7800 STA TEMPO 7810 LDX LOSKEE2 7820 LDY SKEE2 7830 BLANK2 LDA #0 7840 STA PLAYER3,X 7850 INX 7860 INY 7870 CPY TEMPO 7880 BNE BLANK2 7890 RTS 7900 CLRAIM LDX #0 ;CLEAR AIM 7910 LDA #0 7920 CLRLOOP INX 7930 STA PLAYER0,X 7940 STA PLAYER1,X 7950 CPX #255 7960 BNE CLRLOOP 7970 JSR MOVEUP 7980 RTS 7990 DISPNUM LDY #0 ;DISPLAY NUMBER 8000 TXA ;ON THE SCREEN 8010 SEC 8020 L01 SBC #$64 8030 BCC L02 8040 INY 8050 TAX 8060 BCS L01 8070 L02 CLC 8080 TYA 8090 ADC #$10 8100 STA HUNDRED 8110 LDY #0 8120 TXA 8130 SEC 8140 L03 SBC #$0A 8150 BCC L04 8160 INY 8170 TAX 8180 BCS L03 8190 L04 CLC 8200 TYA 8210 ADC #$10 8220 STA TEN 8230 TXA 8240 ADC #$10 8250 STA ONE 8260 RTS 8270 ; 8280 TSCORE LDA SCOREL ;PRINT SCORE 8290 STA FRO ;ON SCREEN 8300 LDA SCOREH 8310 STA FRO+1 8320 JSR IFP 8330 JSR FASC 8340 LDY #0 8350 S01 LDA (INBUFF),Y 8360 BMI S02 8370 INY 8380 BNE S01 8390 S02 AND #$7F 8400 LDX #4 8410 S03 SEC 8420 SBC #$20 8430 STA DISP+30,X 8440 CPX #0 8450 BEQ S05 8460 DEX 8470 DEY 8480 CPY #$FF 8490 BEQ S04 8500 LDA (INBUFF),Y 8510 CLC 8520 BCC S03 8530 S04 INY 8540 LDA #$30 8550 BNE S03 8560 S05 RTS 8570 PUTHIT LDA HUNDRED ;PUT # OF 8580 STA DISP+46 ;HITS ON 8590 LDA TEN ;SCREEN 8600 STA DISP+47 8610 LDA ONE 8620 STA DISP+48 8630 RTS 8640 PUTSHOT LDA HUNDRED ;PUT # OF 8650 STA DISP+7 ;SHOTS ON 8660 LDA TEN ;SCREEN 8670 STA DISP+8 8680 LDA ONE 8690 STA DISP+9 8700 RTS 8710 PUTROD LDA HUNDRED ;PUT # OF 8720 STA DISP+70 ;ROUNDS 8730 LDA TEN ;ON SCREEN 8740 STA DISP+71 8750 LDA ONE 8760 STA DISP+72 8770 RTS 8780 SCSP LDA SPEED ;SET VALUE OF 8790 SEC ;SKEETS 8800 CMP #160 ;DEPENDING ON 8810 BCS SC50 ;SPEED 8820 SEC 8830 CMP #50 8840 BCS SC25 8850 SC10 LDA #10 ;GIVE 10 FOR SLOW 8860 STA POINT 8870 RTS 8880 SC25 LDA #25 ;GIVE 25 FOR MED. 8890 STA POINT 8900 RTS 8910 SC50 LDA #50 ;GIVE 50 FOR FAST 8920 STA POINT 8930 RTS 8940 ; 8950 ; DATA FOR NEW CHARACTER SET 8960 ; 8970 CHDATA .BYTE 56,120,216,24,24 8980 .BYTE 24,24,225 8990 .BYTE 0,0,0,0,0,0,0,0 9000 .BYTE 0,124,12,12,124 9010 .BYTE 96,96,124 9020 .BYTE 0,0,0,124,12,124,12,124 9030 .BYTE 0,0,0,0,0,54,62,6 9040 .BYTE 60,195,195,195,195 9050 .BYTE 195,195,60 9060 .BYTE 0,56,108,108,108 9070 .BYTE 108,108,56 9080 .BYTE 0,0,0,56,108,108,108,56 9090 .BYTE 0,0,0,0,0,28,54,28 9100 .BYTE 85,0,0,0,0,0,0,0 9110 ; 9120 ;LEFT OR RIGHT DATA FOR STICK 9130 ; 9140 STRX .BYTE 0,0,0,0,0,1,1,1 9150 .BYTE 0,-1,-1,-1,0,0,0,0 9160 ; 9170 ;UP OR DOWN DATA FOR STICK 9180 ; 9190 STRY .BYTE 0,0,0,0,0,1,-1,0 9200 .BYTE 0,1,-1,0,0,1,-1,0 9210 ; 9220 ;GRAPHICS FOR AIM(GUNSIGHT) 9230 ; 9240 PIC .BYTE 16,16,16,0,0,0 9250 .BYTE 146,0,0,0,16,16,16 9260 ; 9270 ;GRAPHICS FOR SKEETS 9280 ; 9290 MG .BYTE 0,56,124,254,0,48,120 9300 .BYTE 252,0,32,112,248,0,32 9310 .BYTE 112,0,0,0,0,0,0,0,0 9320 .BYTE 0,0,0,0,20,65,8,34,8 9330 .BYTE 32,132,32,80,128,16 9340 .BYTE 128,64,128,32,0,0,0,0,0 9350 ; 9360 ;GRAPHICS FOR BULLET 9370 ; 9380 PIC2 .BYTE 0,0,0,124,124,124 9390 .BYTE 124,124,124,124,0,0,0 9400 ; 9410 ;DLI ROUTINE 9420 ; 9430 DLI PHA 9440 TXA 9450 PHA 9460 LDX DLIREG 9470 LDA TABLE,X 9480 INX 9490 STX DLIREG 9500 STA WSYNC 9510 STA COLBK 9520 STA COLPF2 9530 DLOOP LDA #30 9540 CMP DLIREG 9550 BNE A1 9560 LDA #0 9570 STA DLIREG 9580 A1 PLA 9590 TAX 9600 PLA 9610 RTI 9620 ; 9630 ;COLOR TABLE FOR SKY 9640 ; 9650 TABLE .BYTE 242,242,242,242,242 9660 .BYTE 242,226,210,194,178 9670 .BYTE 162,146,130,114,98,82 9680 .BYTE 66,2,2,2,4,4,4,4,4,4 9690 .BYTE 4,4,4,4,4 9700 ; 9710 ;DATA FOR AUDIO SOUNDS 9720 ; 9730 SOUND1 .BYTE 20,$8F,6 9740 .BYTE 18,$8A,4 9750 .BYTE 16,$85,2 9760 .BYTE 14,$82,10 9770 .BYTE 10,$82,12 9780 .BYTE 0,0,0 9790 .BYTE 20,$84,4 9800 .BYTE 18,$86,4 9810 .BYTE 16,$88,4 9820 .BYTE 14,$8A,4 9830 .BYTE 40,$2D,1 9840 .BYTE 40,$2A,2 9850 .BYTE 40,$24,2 9860 .BYTE 0,0,0 9870 SOUND2 .BYTE 10,$8F,10 9880 .BYTE 9,$8A,8 9890 .BYTE 8,$87,7 9900 .BYTE 7,$85,6 9910 .BYTE 6,$83,5 9920 ; 9930 ;DATA FOR SCREEN 9940 ; 9950 CHARDT .BYTE 200,0,200,0,160,0 9960 .BYTE 3,0,1,5,2,9,28 9970 .BYTE 0,1,5,2,9 9980 .BYTE 6,0,34,10,5,0,1,4,2,8 9990 .BYTE 30,0,1,4,2,8,4,0,36,10 010000 .BYTE 43,0,1,3 010010 .BYTE 2,7,32,0,1,3,2,7,2,0 010020 .BYTE 38,10,81,0,1,1,2,6,34,0 010030 .BYTE 1,1,2,6,40,10,1,0,1 010040 .BYTE 51,1,40,1,47 010050 .BYTE 1,52,1,51,1,26,17,0,1 010060 .BYTE 51,1,35,1,47,1,50,1,37 010070 .BYTE 1,26,11,0,1,40,1,41,1 010080 .BYTE 52,1,51,1,26,18,0 010090 .BYTE 1,50,1,47,1,53,1,46,1 010100 .BYTE 36,1,26,11,0 010110 ; 010120 ;DISPLAY LIST 010130 ; 010140 LST .BYTE $F0,$F0,$F0,$C2 010150 .BYTE SCR&255,SCR/256 010160 .BYTE $82,$82,$82,$82,$82 010170 .BYTE $8C,$8C,$8D,$8D,$8D 010180 .BYTE $8D,$8D,$8D,$8D 010190 .BYTE $82,$82,$82 010200 .BYTE $82,$82,$82,$82,$82,$82 010210 .BYTE $82,$82,$82,2,$41 010220 .WORD LST 010230 ; 010240 ;SCREEN DISPLAY 010250 ; 010260 .END